แม้ว่าเราจะมองเห็นข้อมูลในรูปแบบตาราง 2 มิติเพื่อความสะดวกในการคำนวณทางคณิตศาสตร์ แต่ฮาร์ดแวร์เห็นเพียง ลำดับต่อเนื่องของบิต 1 มิติ. การทำความเข้าใจ 'ความจริงเชิงเส้น' นี้เป็นสิ่งจำเป็นก่อนที่จะสามารถนำไปใช้ในการสร้างแบบจำลองการลดทอนแถว (reduction patterns) ได้ รูปแบบการลดทอน—เช่น การหาค่ามากสุด หรือผลรวมของเลขชี้กำลัง
1. หลักการ "การแปลงให้เป็นเส้นตรง"
เทนเซอร์หลายมิติทุกตัวถูกเก็บไว้ตามลำดับทางกายภาพ ในการประยุกต์ใช้ $\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$ เราจำเป็นต้องระบุส่วนของหน่วยความจำที่แสดงเป็นแถว และดำเนินการวนลูปเพื่อคำนวณค่ามากสุดและผลรวม
2. ความมั่นคงทางตัวเลข
ทำไมฟังก์ชัน Softmax จึงต้องมีการปรับสมดุล? ค่าอินพุตที่สูงทำให้ $e^{x}$ ขยายตัวอย่างรวดเร็ว ซึ่งเราสามารถปรับสมดุลได้โดยใช้: $$\text{exp}(x_i - \text{max}(x))$$ ซึ่งบังคับให้นักออกแบบเคอร์เนลต้องดำเนินการลดทอนแบบเส้นตรงสองรอบ (คิดค่ามากสุดก่อน แล้วจึงคิดผลรวม) ก่อนการทำปกติในขั้นตอนสุดท้าย
3. การตรวจสอบผ่านแถวสั้น
เมื่อพัฒนาเคอร์เนลด้วย Triton เราจะใช้ การทดสอบเฉพาะแถวสั้นๆ (เช่น ความกว้าง 16) เพื่อให้มั่นใจว่าการคำนวณตำแหน่งแบบเส้นตรงของเราจับทุกค่าได้อย่างถูกต้อง ก่อนที่จะขยายไปใช้งานจริง